package com.greenzebras.geocache.datastore;

import java.util.List;

import com.greenzebras.geocache.cachedata.Cache;
import com.greenzebras.geocache.cachedata.CacheCoordinate;
import com.greenzebras.geocache.cachedata.CacheType;

public interface GeocacheCacheDataManager {
	void getLocalCaches(
			GeocacheCacheRequestResponseListener geocacheCacheRequestResponseListener,
			CacheCoordinate cacheCoordinate);

	void getCachesForType(
			GeocacheCacheRequestResponseListener geocacheCacheRequestResponseListener,
			CacheType cacheType);
	
	void getCachesForTypes(
			GeocacheCacheRequestResponseListener geocacheCacheRequestResponseListener,
			List<String> cacheTypes);

	void getCacheByName(
			GeocacheCacheRequestResponseListener geocacheCacheRequestResponseListener,
			String name);

	void getCachesByNameSimilarTo(
			GeocacheCacheRequestResponseListener geocacheCacheRequestResponseListener,
			String name);

	void getCachesDistanceFrom(
			GeocacheCacheRequestResponseListener geocacheCacheRequestResponseListener,
			CacheCoordinate cacheCoordinate, float radialDistanceInMeters);

	void createCache(
			GeocacheCacheManagementRequestResponseListener geocacheCacheManagementRequestResponseListener,
			Cache cache);

	void updateCache(
			GeocacheCacheManagementRequestResponseListener geocacheCacheManagementRequestResponseListener,
			Cache cache);

	void deleteCache(
			GeocacheCacheManagementRequestResponseListener geocacheCacheManagementRequestResponseListener,
			Cache cache);
}
